iT邦幫忙

2024 iThome 鐵人賽

DAY 24
0
Odoo

30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用系列 第 24

【Day24】Odoo 模組結構( __manifest__.py):用途與電商實踐範例

  • 分享至 

  • xImage
  •  

manifest 文件和資料夾結構是創建和組織模組的核心元素。manifest 是模組的描述文件,負責定義模組的名稱、版本、依賴項、資料夾、文件等基本屬性。了解這些資料夾和文件的用途對開發 Odoo 模組非常重要,尤其是針對 ERP 和電商相關的應用。

Odoo 模組的主要資料夾結構與用途

當創建 Odoo 模組時,通常會包含以下主要的資料夾與文件:

manifest.py 文件

用途: 這是 Odoo 模組的描述文件,定義模組的所有關鍵屬性,例如名稱、版本、作者、依賴的模組以及需要加載的數據文件。
內容範例:

{
    'name': 'E-commerce Extension',
    'version': '1.0',
    'author': 'Your Company',
    'depends': ['base', 'website_sale'],  # 依賴的模組,如基礎模組和電商模組
    'data': [
        'views/product_template_views.xml',  # 產品模板的自訂視圖
        'security/ir.model.access.csv',  # 權限控制
    ],
    'installable': True,  # 是否可安裝
}

models/ 資料夾

用途: 存放定義 Odoo 模型的 Python 文件。模型用於定義資料結構(如產品、客戶、訂單等)的邏輯與規則。
ERP 範例: 在 ERP 系統中,你可以建立 models/product.py 來擴展或自訂產品模型。

from odoo import models, fields

class ProductTemplate(models.Model):
    _inherit = 'product.template'
    product_sku = fields.Char(string="Product SKU")

views/ 資料夾

用途: 用來存放 XML 格式的視圖定義文件,這些文件負責定義如何在 Odoo UI 上顯示資料。
電商範例: views/product_template_views.xml 可以定義電商產品的自訂視圖。

<odoo>
    <record id="view_product_template_form_inherit" model="ir.ui.view">
        <field name="name">product.template.form.inherit</field>
        <field name="model">product.template</field>
        <field name="inherit_id" ref="product.product_template_only_form_view"/>
        <field name="arch" type="xml">
            <xpath expr="//field[@name='list_price']" position="after">
                <field name="product_sku"/>
            </xpath>
        </field>
    </record>
</odoo>

security/ 資料夾

用途: 存放權限控制文件,例如 ir.model.access.csv,用於定義不同用戶角色對模型的訪問權限。
範例: 定義 ERP 中員工對產品模型的讀取與修改權限。

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_manager,access.product.manager,model_product_template,base.group_user,1,1,1,1

data/ 資料夾

用途: 用於存放初始化數據(如預設設定值或預載資料),這些數據會在模組安裝時自動加載。
電商範例: data/ecommerce_data.xml 可以存放一些預設的產品資料或分類。

static/ 資料夾

用途: 用來存放靜態文件(如圖片、CSS、JavaScript 等),這些文件會在 Odoo 的前端顯示。
電商範例: static/src/img/ 可以存放產品圖片,或 static/src/css/ 可以自訂網站樣式。

controllers/ 資料夾

用途: 如果你的模組需要處理前端或網站頁面的請求,這個資料夾會用來定義控制器邏輯(主要是 HTTP 請求的處理)。
電商範例: 在 controllers/main.py 定義自訂的購物車功能。


上一篇
【Day23】使用 Odoo List View 管理電商產品:讓商品列表展示更直觀
下一篇
【Day25】用 GenAI 重做去年鐵人賽 Odoo 圖書館系統 【~Day10】
系列文
30天就算 0 基礎,也能使用 GenAI 創造簡單的 Odoo 模組應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言